# -*- coding: utf-8 -*-
# windows 下如果出现编码问题，将 utf-8 改为 cp936
import random
import wx

class MainFrame(wx.Frame):
    # 初始化
    def __init__(self):
        # 初始化窗口
        wx.Frame.__init__(self, None, -1, u"猜数字", size = (400, 300))
        wx.StaticText(self, -1, u"猜一猜我在想几？(1~99)", pos = (30, 50))
        # 输入框，绑定回车事件
        self.input = wx.TextCtrl(self, -1, "", pos = (50, 100), style=wx.TE_PROCESS_ENTER)
        self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter, self.input)
        # 显示框，不可编辑
        self.text = wx.TextCtrl(self, -1, "", pos = (200, 0), size=(200, 300), style=wx.TE_MULTILINE)
        self.text.Enable(False)
        # 按钮，绑定点击事件，初始时不显示
        self.button = wx.Button(self, -1, u"再来一次", pos = (50, 150))
        self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)
        self.button.Show(False)
        # 随机生成答案
        self.num = random.randint(1, 99)

    # 回车事件响应
    def OnEnter(self, event):
        answer_str = self.input.GetValue()  # 获取输入字符
        try:
            answer = eval(answer_str)  # 转成数值
        except:
            self.text.AppendText(u'不太对，再猜\n')
            return
        self.input.Clear()  # 清空输入框
        # 判断大小，添加输出结果
        if answer < self.num:
            self.text.AppendText(answer_str + u' 太小了\n')
        elif answer > self.num:
            self.text.AppendText(answer_str + u' 太大了\n')
        else:
            self.text.AppendText(answer_str + u' 对啦！\n')
            self.button.Show(True)  # 猜中，显示重来按钮

    # 按钮点击事件响应
    def OnClick(self, event):
        self.text.SetValue('')  # 清空输出
        self.button.Show(False)  # 隐藏按钮
        self.num = random.randint(1, 99)  # 重新生成答案


if __name__ == '__main__':
    app = wx.App()  # 创建应用
    frame = MainFrame()  # 创建主界面
    frame.Show()  # 显示主界面
    app.MainLoop()  # 程序运行

